1 module android_entry; 2 3 version(Android): 4 import app; 5 import hip.jni.helper.androidlog; 6 import hip.jni.jni; 7 import hip.jni.helper.jnicall; 8 ///Setups an Android Package for HipremeEngine 9 alias HipAndroid = javaGetPackage!("com.hipremeengine.app.HipremeEngine"); 10 import hip.systems.input; 11 import hip.console.log; 12 13 14 export extern(C) 15 { 16 private __gshared bool _hasExecInit = false; 17 void Java_com_hipremeengine_app_HipremeEngine_HipremeInit(JNIEnv* env, jclass clazz) 18 { 19 if(!_hasExecInit) 20 { 21 _hasExecInit = true; 22 import hip.filesystem.systems.android; 23 HipremeInit(); 24 JNISetEnv(env); 25 aaMgr = cast(AAssetManager*)HipAndroid.javaCall!(Object, "getAssetManager"); 26 aaMgr = AAssetManager_fromJava(env, aaMgr); 27 } 28 } 29 30 private __gshared bool _hasExecMain; 31 private __gshared int _mainRet; 32 jint Java_com_hipremeengine_app_HipremeEngine_HipremeMain(JNIEnv* env, jclass clazz) 33 { 34 if(!_hasExecMain) 35 { 36 _hasExecMain = true; 37 int[2] wsize = HipAndroid.javaCall!(int[2], "getWindowSize"); 38 _mainRet = HipremeMain(wsize[0], wsize[1]); 39 } 40 return _mainRet; 41 } 42 jboolean Java_com_hipremeengine_app_HipremeEngine_HipremeUpdate(JNIEnv* env, jclass clazz) 43 { 44 return HipremeUpdate(); 45 } 46 void Java_com_hipremeengine_app_HipremeEngine_HipremeRender(JNIEnv* env, jclass clazz) 47 { 48 HipremeRender(); 49 } 50 51 void Java_com_hipremeengine_app_HipremeEngine_HipremeReinitialize(JNIEnv* env, jclass clazz) 52 { 53 import hip.hiprenderer.renderer; 54 HipRenderer.reinitialize(); 55 } 56 57 void Java_com_hipremeengine_app_HipremeEngine_HipremeDestroy(JNIEnv* env, jclass clazz) 58 { 59 JNISetEnv(null); 60 HipremeDestroy(); 61 } 62 }